1. Technical Field
The present invention relates generally to a method of storing a data file, particularly a file in the MPEG format.
Specifically, the invention relates to a method of storing a data file, in particular of the MPEG type and comprising a flow of different “frames”, said method comprising a system for protecting said data file, which system takes into account a redundancy factor stored in said data file.
The invention further relates to a method of decoding a data file, in particular an MPEG type of file that comprises a flow of different frames, said data file being stored by a selectively protecting storage method.
The invention relates, particularly but not exclusively, to a method of storing audio/video files in the MPEG format for application to video recorders, this description making reference to this field of application for convenience of illustration only.
2. Prior Art
As is well known, PVRs (Personal Video Recorders) are an expanding branch of the HDD (Hard Disk Drive) market.
In particular, HDDs for use in PVRs are required to exhibit a high storage capacity for storing files of considerable size, as audio/video (AV) files are, to be cost-efficient.
To optimize the storage space taken up, it is common to compress the audio/video (AV) files using different standards. A common compression format is the MPEG (Moving Pictures Experts Group) format.
In particular, the MPEG standard of compression provides for each flow of images to be resolved into a succession of frames, advantageously described as basic images and difference images (i.e., images including differences from the basic ones).
Taking the instance of a moving object against a stationary background, an explanation of the MPEG Standard can be approximated by the following: an image is processed by first storing a complete accurate starting image (basic image); thereafter, only variations of each following image from the basic image are encoded, and only the difference-image stored.
In fact, the images that follow the starting image typically contain an unchanged part (i.e. information that is redundant for the purpose of storing the moving images) of the starting image. The MPEG Standard effectively removes the need to store a large amount of unnecessary data, in particular data concerning the unchanged part of an image, and advantageously reduces the overall size of the compressed audio/video (AV) file, i.e. of the resultant file in the MPEG format.
In particular, the MPEG Standard provides a set of special algorithms for compressing a sequence S of digital images, which algorithms are directed to reduce space and time redundancies in the sequence S.
Space redundancy is reduced by compressing each image independently with mathematical operations such as quantization, discrete cosine transform, and Huffman encoding.
Time redundancy is reduced by utilizing the relation that exists between successive images in the sequence S, each image being expressed as a translation of the preceding and/or the following image in the sequence S.
As an overview, the MPEG Standard provides three types of basic image or basic frame:
I-frame (Intra coded frame), where the whole basic-image is encoded to provide a reference for storing the frames to follow;
P-frame (Predicted frame), where only the difference of information from one other frame, such as the I-frame, is encoded, so a P-frame has a reduced informational contents; and
B-frame (Bidirectionally predicted frame), where image variations due to the motion described by the frame sequence are typically encoded with reference to multiple other frames (P or I).
Any one sequence S starts with an I-frame and goes on as an alternating succession of P-frames and B-frames, as shown in FIG. 1.
It should be noted that I-frames are encoded independently, P-frames are encoded relative to either an I- or a P-type previous frame in the sequence S, and B-frames are encoded relative to two frames, of the I- or P-type, being a previous and a following one in the sequence S.
A typical succession of images could be: I B B P B B P B B I B . . . , this being in particular the order in which the images are displayed. In actual practice, due to the above-outlined definition of the I-, P- and B-frames, an image decoder in the MPEG format is necessary that receives the P-frames ahead of the B-frames, and the I-frames ahead of the P-frames, as in the sequence illustrated by FIG. 1.
As shown in FIG. 2, a system adapted to carry out the MPEG compression just described, indicated as MPEG system 1, comprises at least one sequential encoder CODS effective to receive an initial image IM1 comprising a series of frames in an initial order, and to encode them in accordance with the algorithms of MPEG Standard, to eventually produce the sequence S shown in FIG. 1.
The MPEG system 1 further includes a decoder DEC effective to rearrange and decode such frames to enable display of a final image IM2.
In particular, to encode a B-frame, the encoder CODS is required to retain, in a special memory called the frame memory, the previously encoded (and already decoded) I- and P-frames to which the B-frame is related.
All this requires an amount of memory, specially for encoding and decoding according to the MPEG Standard.
In addition, the MPEG system 1 should be capable of detecting errors and protecting private information. For example, important data can be duplicated and lost packets retrieved.
It should be noted that, in consequence of the hierarchy enforced on the frames by the MPEG Standard, the same error in different type frames would carry different weights. In particular, if one or more bytes in a B-frame becomes corrupted, the ultimate image may include an error that is not perceivable by an end user, but several corrupted bytes in a I-frame can deteriorate a whole sequence of frames.
To give a quantitative idea, take the instance of HDDs as used in a PC, in workstations, or network servers. An error allowance of 1*E−12 to 1*E−14 is specified for such HDDs, depending on the application involved. Such high levels of reliability are achieved by encoding user's data using chained codes, namely:
an internal (or line) code COD-I; and
an external code COD-E with error detecting and correcting facilities.
The internal code COD-I provides periodic up-dating or refreshing for a loop path of a R/W channel, and especially for a timing recovery loop. The internal code COD-I also provides an amount of SNR gain, i.e. enables good performance, with reference to the encoding error, even at low SNR values.
The external code COD-E is more often a Reed-Solomon code (code RS). This code RS has three characterizing parameters:
the length m of the symbol employed;
the interleaving depth IN; and
the number of redundant symbols in each interleave, or redundancy value indicate with 2t.
With the redundancy value given as 2t, a number of errors equal to one half the redundancy value, i.e. equal t, can be detected and corrected.
Actually, codes are known whereby the locations of wrong symbols can be found, marking them by means of “erasures”: in this case a number 2t of errors corrected. However, most of the commercially available hard disks are not equipped with such codes.
At the end of external RS-code processing, an encoded data sector 2 has the structure shown in FIG. 3, where the encode parameters are the following values:IN=3 2t=4
This outlines an instance where two errors can be detected and corrected per interleave.
In particular, shown schematically in FIG. 3 are:
a sequence 3 of user's data D1, . . . , Dk;
a memory array 4 where the user's data D1, . . . , Dk are reordained as appropriate; and
encoded data sector 2.
It should be noted that each sector 2 includes essentially three logic sections, containing:
(I) user's data;
(II) redundant data;
(III) symbols of a CRC (Cycle Redundancy Check) code, i.e. a code that only allows detection of errors, if any; actually, two codes CRC1 and CRC2 are appended to each sector 2.
The CRC code is usually employed to check that a sector 2 has been re-read properly. In other words, the CRC code is employed to check if the RS-encoding process has applied wrong corrections.
In conventional systems, the protection must be afforded uniformly to the data stored in a hard disk. Thus, the amount of redundant data is set at a maximum tmax, to provide all-round reliability.
To determine the performance of a hard disk, it is known to calculate the BER (Byte Error Rate) of the system following RS decoding, i.e. after decoding a file that has been encoded by RS coding, according to a corresponding BER input to a decoder DEC where the RS decoding is effected.
It is customary in this field of application to refer to the byte error rate output from the decoder DEC as the “hard” BER, and to the byte error rate input to the decoder DEC as the “soft” BER, as shown schematically in FIG. 4.
Taking an input soft BER of 10−5 to the decoder DEC, the plot of the hard BER against time t is shown schematically in FIG. 5. For example, a hard BER of 10−14 ensures that the system will be a reliable one. In particular, worst-case, best-case, and intermediate hard BERs are plotted, with the worst and best cases being dependent on the error events over the interleaves.
The admissible values for the hard BERs depend on the RS encode/decode applications. In particular, in the instance of audio/video (AV) files, e.g. motion-image or musical pieces, these values are very high due to the requirements for high-fidelity playing. Furthermore, on account of the large size of audio/video files, the demand for accuracy greatly expands the memory requirements of video/audio applications.
Consequently, a need has arisen for a method of storing compressed audio/video files, whereby playing fidelity can be acceptable for an end user, while the storage space requirements of such files can be reduced so allowing the use of hard disk HDD of reduced size, thereby overcoming the limitations of prior art audio/video file storage methods and obviating the need of large inconvenient HDDs.